package com.ruoyi.control.service.impl;

import java.util.Date;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SnowflakeIdUtils;
import com.ruoyi.control.domain.InclinedshaftHistory;
import com.ruoyi.control.mapper.InclinedshaftHistoryMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.control.mapper.InclinedshaftMapper;
import com.ruoyi.control.domain.Inclinedshaft;
import com.ruoyi.control.service.IInclinedshaftService;

/**
 * 斜井提升Service业务层处理
 *
 * @author ruoyi
 * @date 2024-12-20
 */
@Service
public class InclinedshaftServiceImpl implements IInclinedshaftService
{
    @Autowired
    private InclinedshaftMapper inclinedshaftMapper;
    @Autowired
    private InclinedshaftHistoryMapper inclinedshaftHistoryMapper;
    /**
     * 查询斜井提升
     *
     * @param tagName 斜井提升主键
     * @return 斜井提升
     */
    @Override
    public Inclinedshaft selectInclinedshaftByTagName(String tagName)
    {
        return inclinedshaftMapper.selectInclinedshaftByTagName(tagName);
    }

    /**
     * 查询斜井提升列表
     *
     * @param inclinedshaft 斜井提升
     * @return 斜井提升
     */
    @Override
    public List<Inclinedshaft> selectInclinedshaftList(Inclinedshaft inclinedshaft)
    {
        Inclinedshaft inclinedshaft2 =new Inclinedshaft();
        BeanUtils.copyProperties(inclinedshaft,inclinedshaft2);
        if ("5555555555555555555".equals(inclinedshaft.getRespectDataType())){
            inclinedshaft2.setRespectDataType(null);
            String[] arr={"网络连接","运行速度","运行状态","给定频率",
                    "位置","从站数据","刹车输入","刹车输出","速度输入","速度输出","勾数"};
            if (inclinedshaftMapper.selectInclinedshaftByTagName("网络连接") != null){
                for (int i=0;i< arr.length ;i++){
                    Inclinedshaft inclinedshaft1=new Inclinedshaft();
                    InclinedshaftHistory inclinedshaftHistory=new InclinedshaftHistory();
                    inclinedshaft1.setTagName(arr[i]);
                    switch (arr[i]){
                        case "网络连接":
                            inclinedshaft1.setValue("正常");
                            break;
                        case "运行速度":
                            inclinedshaft1.setValue("0.00m/s");
                            break;
                        case "运行状态":
                            inclinedshaft1.setValue("等待使用");
                            break;
                        case "给定频率":
                            inclinedshaft1.setValue("0.00HZ");
                            break;
                        case "位置":
                            inclinedshaft1.setValue("8.42米");
                            break;
                        case "从站数据":
                            inclinedshaft1.setValue("0.00脉冲");
                            break;
                        case "刹车输入":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "刹车输出":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "速度输入":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "速度输出":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "勾数":
                            inclinedshaft1.setValue("23次");
                            break;
                    }
                    inclinedshaftMapper.updateInclinedshaft(inclinedshaft1);
                    inclinedshaft1.setAddress(arr[i]);
                    inclinedshaft1.setDescription(arr[i]);
                    inclinedshaft1.setUpdateTime(new Date());
                    inclinedshaft1.setDataType("String");
                    inclinedshaft1.setClientAccess("RO");
                    inclinedshaft1.setRespectDataType("1");
                    inclinedshaft1.setScanRate("100");
                    BeanUtils.copyProperties(inclinedshaft1,inclinedshaftHistory);
                    inclinedshaftHistory.setId(String.valueOf(new SnowflakeIdUtils(5,8).nextId()));
                    inclinedshaftHistoryMapper.insertInclinedshaftHistory(inclinedshaftHistory);
                }
            }else {
                for (int i=0;i< arr.length ;i++){
                    Inclinedshaft inclinedshaft1=new Inclinedshaft();
                    InclinedshaftHistory inclinedshaftHistory=new InclinedshaftHistory();
                    switch (arr[i]){
                        case "网络连接":
                            inclinedshaft1.setValue("正常");
                            break;
                        case "运行速度":
                            inclinedshaft1.setValue("0.00m/s");
                            break;
                        case "运行状态":
                            inclinedshaft1.setValue("等待使用");
                            break;
                        case "给定频率":
                            inclinedshaft1.setValue("0.00HZ");
                            break;
                        case "位置":
                            inclinedshaft1.setValue("8.42米");
                            break;
                        case "从站数据":
                            inclinedshaft1.setValue("0.00脉冲");
                            break;
                        case "刹车输入":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "刹车输出":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "速度输入":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "速度输出":
                            inclinedshaft1.setValue("0.0DC/V");
                            break;
                        case "勾数":
                            inclinedshaft1.setValue("23次");
                            break;
                    }
                    inclinedshaft1.setTagName(arr[i]);
                    inclinedshaft1.setAddress(arr[i]);
                    inclinedshaft1.setDescription(arr[i]);
                    inclinedshaft1.setUpdateTime(new Date());
                    inclinedshaft1.setDataType("String");
                    inclinedshaft1.setClientAccess("RO");
                    inclinedshaft1.setRespectDataType("1");
                    inclinedshaft1.setScanRate("100");
                    BeanUtils.copyProperties(inclinedshaft1,inclinedshaftHistory);
                    inclinedshaftHistory.setId(String.valueOf(new SnowflakeIdUtils(5,8).nextId()));
                    inclinedshaftHistoryMapper.insertInclinedshaftHistory(inclinedshaftHistory);
                    inclinedshaftMapper.insertInclinedshaft(inclinedshaft1);
                }
            }
        }
        return inclinedshaftMapper.selectInclinedshaftList(inclinedshaft2);
    }

    /**
     * 新增斜井提升
     *
     * @param inclinedshaft 斜井提升
     * @return 结果
     */
    @Override
    public int insertInclinedshaft(Inclinedshaft inclinedshaft)
    {
        return inclinedshaftMapper.insertInclinedshaft(inclinedshaft);
    }

    /**
     * 修改斜井提升
     *
     * @param inclinedshaft 斜井提升
     * @return 结果
     */
    @Override
    public int updateInclinedshaft(Inclinedshaft inclinedshaft)
    {
        inclinedshaft.setUpdateTime(DateUtils.getNowDate());
        return inclinedshaftMapper.updateInclinedshaft(inclinedshaft);
    }

    /**
     * 批量删除斜井提升
     *
     * @param tagNames 需要删除的斜井提升主键
     * @return 结果
     */
    @Override
    public int deleteInclinedshaftByTagNames(String[] tagNames)
    {
        return inclinedshaftMapper.deleteInclinedshaftByTagNames(tagNames);
    }

    /**
     * 删除斜井提升信息
     *
     * @param tagName 斜井提升主键
     * @return 结果
     */
    @Override
    public int deleteInclinedshaftByTagName(String tagName)
    {
        return inclinedshaftMapper.deleteInclinedshaftByTagName(tagName);
    }
}
